Fix tpm split driver to follow changes in the xenbus API.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sat, 24 Sep 2005 07:58:41 +0000 (08:58 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sat, 24 Sep 2005 07:58:41 +0000 (08:58 +0100)
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
linux-2.6-xen-sparse/drivers/xen/tpmback/xenbus.c
linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c

index 49c946aeec365d602ac041d30b395ca182640771..3bb1247a001298fadf81f4387ad91311f92bebc0 100644 (file)
@@ -93,7 +93,8 @@ static void frontend_changed(struct xenbus_watch *watch, const char *node)
         * Tell the front-end that we are ready to go -
         * unless something bad happens
         */
-       err = xenbus_transaction_start(be->dev->nodename);
+again:
+       err = xenbus_transaction_start();
        if (err) {
                xenbus_dev_error(be->dev, err, "starting transaction");
                return;
@@ -127,7 +128,14 @@ static void frontend_changed(struct xenbus_watch *watch, const char *node)
                goto abort;
        }
 
-       xenbus_transaction_end(0);
+       err = xenbus_transaction_end(0);
+       if (err == EAGAIN)
+               goto again;
+       if (err) {
+               xenbus_dev_error(be->dev, err, "end of transaction");
+               goto abort;
+       }
+
        xenbus_dev_ok(be->dev);
        return;
 abort:
index f19676d1db833599d1f934bb4b6b24714fdf1249..a9535a08f40df757a93899e273726db170c61a80 100644 (file)
@@ -331,7 +331,8 @@ static int talk_to_backend(struct xenbus_device *dev,
                goto out;
        }
 
-       err = xenbus_transaction_start(dev->nodename);
+again:
+       err = xenbus_transaction_start();
        if (err) {
                xenbus_dev_error(dev, err, "starting transaction");
                goto destroy_tpmring;
@@ -363,6 +364,8 @@ static int talk_to_backend(struct xenbus_device *dev,
        }
 
        err = xenbus_transaction_end(0);
+       if (err == EAGAIN)
+               goto again;
        if (err) {
                xenbus_dev_error(dev, err, "completing transaction");
                goto destroy_tpmring;